import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
import {WorkOrderVo} from "@/api/menu/shoppingCart";


// // 定义购物车商品接口
// export interface shoppingCartVo {
//   goodsId: string | number; // 商品ID
//   goodsName: string; // 商品名称
//   goodsPrice: number; // 商品价格
//   quantity?: number; // 商品数量（可选）
// }

export const useShoppingCartStore = defineStore(
  'shoppingCart',
  () => {
  // 购物车商品数组
  const cartItems = ref<WorkOrderVo[]>([]);

  /**
   * 添加商品到购物车
   * @param item 商品信息
   */
  const addToCart = (item: WorkOrderVo): void => {
    const existingItem = cartItems.value.find((i) => i.goodsId === item.goodsId);
    if (existingItem) {
      // 如果商品已存在，增加数量
      existingItem.quantity = (existingItem.quantity || 1) + 1;
    } else {
      // 如果商品不存在，添加到购物车
      cartItems.value.push({ ...item, quantity: 1 });
    }
  };

  /**
   * 从购物车中移除商品
   * @param goodsId 商品ID
   */
  const removeFromCart = (goodsId: string | number): void => {
    cartItems.value = cartItems.value.filter((item) => item.goodsId !== goodsId);
  };

  /**
   * 更新商品数量
   * @param goodsId 商品ID
   * @param quantity 新的数量
   */
  const updateQuantity = (goodsId: string | number, quantity: number): void => {
    const item = cartItems.value.find((i) => i.goodsId === goodsId);
    if (item && quantity > 0) {
      item.quantity = quantity;
    } else if (item && quantity <= 0) {
      // 如果数量小于等于0，移除商品
      removeFromCart(goodsId);
    }
  };

  /**
   * 清空购物车
   */
  const clearCart = (): void => {
    cartItems.value = [];
  };

  /**
   * 获取购物车商品列表
   */
  const getCartItems = computed(() => cartItems.value);

  /**
   * 获取购物车商品总数
   */
  const getCartTotalItems = computed(() =>
    cartItems.value.reduce((total, item) => total + (item.quantity || 1), 0)
  );

  /**
   * 获取购物车总金额
   */
  const getCartTotalPrice = computed(() =>
    cartItems.value.reduce((total, item) => total + item.goodsPrice * (item.quantity || 1), 0)
  );

  return {
    cartItems,
    addToCart,
    removeFromCart,
    updateQuantity,
    clearCart,
    getCartItems,
    getCartTotalItems,
    getCartTotalPrice,
  };
});

// 非setup中使用
export function useShoppingCartStoreHook() {
  return useShoppingCartStore();
}
